package lib

func init() {
	Probs = append(Probs, Problem{
		Num:         256,
		Discription: "粉刷房子",
		Level:       2,
		Labels: map[string]int{
			"动态规划":  1,
			"有限状态机": 1,
		},
	})
}

func MinCost(costs [][]int) int {
	n := len(costs)
	dp := make([][3]int, n)
	dp[0][0] = costs[0][0]
	dp[0][1] = costs[0][1]
	dp[0][2] = costs[0][2]

	for i := 1; i < n; i++ {
		dp[i][0] = min(dp[i-1][1], dp[i-1][2]) + costs[i][0]
		dp[i][1] = min(dp[i-1][0], dp[i-1][2]) + costs[i][1]
		dp[i][2] = min(dp[i-1][0], dp[i-1][1]) + costs[i][2]
	}

	return min(dp[n-1][0], min(dp[n-1][1], dp[n-1][2]))
}
